Durchsuchen von Standardtexten
Es ist leider nicht möglich, Standardtexte nach Inhalt zu durchsuchen. Hier stellen wir Ihnen ein Programm vor, mit dem Sie beliebige Texte durchsuchen können. Die Fundstellen werden farblich hervorgehoben. Bei Bedarf können Sie Textstellen auch ersetzen oder leere Zeilen löschen.
So sieht es aus:
Tipp 1: Texte ausgeben
Wenn Sie keinen Suchstring eingeben und das Feld “Nur Fundstellen ausgeben” deaktiveren, dann werden die Texte angezeigt. Sie können sich so mehrere Texte anzeigen lassen. Dies gilt auch für Texte aus Vertriebsbelegen (Objekt VBBK oder VBBP)!!
Tipp 2: Formulare ändern
Wenn Sie bei Text-ID “TXT” und bei Text-Objekt “FORM” eingeben, dann können Sie auch Formulare ansehen, bzw Texte ersetzen. Aber Achtung: Sie können bei fehlerhafter Anwendung die Formulare zerstören!
Der Report
REPORT zstextfind LINE-SIZE 200. ************************************************************************ * SUCHEN + ERSETZEN In Standardtexten * * --------------------------- * https://tricktresor.com * --------------------------- * ************************************************************************ TABLES: thead, itcpo. DATA: BEGIN OF forms OCCURS 10, name LIKE stxh-tdname, END OF forms, len_find TYPE i, len_2 TYPE i, len_text TYPE i, len_rest TYPE i, len_replace TYPE i, fdpos TYPE i, replaced(300), function, string_replaced, ausgeben, thead_new LIKE thead, tstxh LIKE stxh OCCURS 0 WITH HEADER LINE, xtlines LIKE tline OCCURS 0 WITH HEADER LINE. FIELD-SYMBOLS: <replace>, <vorher>, <nachher>, <findstr>, <col>. *-- Selektionsbild --* SELECTION-SCREEN BEGIN OF BLOCK txt WITH FRAME TITLE text-001. SELECT-OPTIONS: name FOR tstxh-tdname DEFAULT 'Z*' OPTION cp, id FOR tstxh-tdid DEFAULT 'ST '. PARAMETERS: object LIKE tstxh-tdobject DEFAULT 'TEXT'. SELECT-OPTIONS: s_spras FOR tstxh-tdspras DEFAULT sy-langu NO INTERVALS. SELECTION-SCREEN END OF BLOCK txt. SELECTION-SCREEN BEGIN OF BLOCK suc WITH FRAME TITLE text-002. PARAMETERS: find(50) LOWER CASE, replace(50) LOWER CASE. SELECTION-SCREEN END OF BLOCK suc. SELECTION-SCREEN BEGIN OF BLOCK par WITH FRAME TITLE text-003. PARAMETERS: del AS CHECKBOX, "leerzeilen löschen?? update AS CHECKBOX, "Sichern? pagebrk AS CHECKBOX, "Seitenumbruch nur_fs AS CHECKBOX. "Nur Fundstellen anzeigen? SELECTION-SCREEN END OF BLOCK par. START-OF-SELECTION. len_find = strlen( find ). len_replace = strlen( replace ). * assign mit Längenangabe ist nötig, da sonst beim Replace der Text * sowie die Leerzeichen bis zum Variablenende mit ersetzt werden :-) IF len_replace > 0. ASSIGN replace(len_replace) TO <replace>. ENDIF. *--> Lesen aller Texte <--* SELECT * FROM stxh into table tstxh WHERE tdobject = object AND tdname IN name AND tdid IN id AND tdspras IN s_spras. LOOP AT tstxh. REFRESH xtlines. *--> Lesen der gesammelten Texte <--* CALL FUNCTION 'READ_TEXT' EXPORTING id = tstxh-tdid language = tstxh-tdspras name = tstxh-tdname object = tstxh-tdobject IMPORTING header = thead TABLES lines = xtlines EXCEPTIONS OTHERS = 8. CHECK sy-subrc = 0. *-- Prüfen, ob Text angezeigt werden soll --* IF find NE space. ausgeben = ' '. LOOP AT xtlines. IF xtlines-tdline CS find. ausgeben = 'X'. EXIT. ENDIF. ENDLOOP. ELSE. ausgeben = 'X'. ENDIF. *-- Kopfinfo ausgeben --* IF ausgeben = 'X'. IF pagebrk = 'X'. NEW-PAGE. ENDIF. FORMAT COLOR OFF. WRITE AT /1(sy-linsz) sy-uline. WRITE: / 'Text:', tstxh-tdname(50), 'in Sprache', tstxh-tdspras. WRITE AT /1(sy-linsz) sy-uline. *--> Ausgabe der Texte <--* CLEAR string_replaced. LOOP AT xtlines. IF xtlines-tdline IS INITIAL AND del = 'X'. DELETE xtlines. string_replaced = 'X'. ELSEIF xtlines-tdline CS find AND find NE space. len_text = strlen( xtlines-tdline ). fdpos = sy-fdpos. WRITE / xtlines-tdformat COLOR 2. IF replace NE space. REPLACE find LENGTH len_find WITH <replace> INTO xtlines-tdline. string_replaced = 'X'. MODIFY xtlines. PERFORM ausgabe. ELSE. len_replace = len_find. PERFORM ausgabe. ENDIF. ELSE. CHECK nur_fs = space. WRITE / xtlines-tdformat COLOR 2. CASE xtlines-tdformat. WHEN '/:'. *-- SAP-Script: Befehl WRITE xtlines-tdline(77) INTENSIFIED OFF. WHEN '/E'. *-- SAP-Script: Formular-Element WRITE xtlines-tdline(77) COLOR 6. WHEN '/W'. *-- SAP-Script: Window WRITE xtlines-tdline(77) COLOR 5. WHEN OTHERS. WRITE xtlines-tdline(77). ENDCASE. ENDIF. ENDLOOP. ENDIF. *--> Speichern der Texte wenn im Text ersetzt wurde <--* IF string_replaced = 'X' AND update = 'X'. CALL FUNCTION 'SAVE_TEXT' EXPORTING header = thead savemode_direct = 'X' IMPORTING function = function newheader = thead_new TABLES lines = xtlines EXCEPTIONS OTHERS = 5. ENDIF. ENDLOOP. *---------------------------------------------------------------------* * FORM AUSGABE * *---------------------------------------------------------------------* FORM ausgabe. UNASSIGN: <vorher>, <nachher>, <findstr>. IF fdpos > 0. ASSIGN xtlines-tdline(fdpos) TO <vorher>. ELSE. ASSIGN space TO <vorher>. ENDIF. ASSIGN xtlines-tdline+fdpos(len_replace) TO <findstr>. ADD len_replace TO fdpos. len_2 = 132 - fdpos. ASSIGN xtlines-tdline+fdpos(len_2) TO <nachher>. WRITE: <vorher> NO-GAP, <findstr> COLOR 3 NO-GAP, <nachher>. ENDFORM.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024